package com.fengmi.entity;

import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;

@Data
@Document(indexName = "es_user_3",shards = 2,replicas = 1)
public class ESUser {    //=>一个entity对应一个索引库

    @Id
    private Integer id;
    /**
     * 要不要分词？
     * 要不要建立索引？
     * 要不要存储？
     * 使用哪种分词器？
     *
     * type:指定域在es中的类型
     * Integer=>FieldType.Integer
     * 如果类型为Integer、Double、Date 对应的域是不会进行分词的
     * 如果类型为String（FieldType.Text），对应的域一定会分词 比如商品名称
     * 如果类型为String（FieldType.Keyword），对应的域不会分词，比如品牌名称，商品分类，email，city
     *
     *
     * index:指定该域要不要建立倒排索引，默认值是true
     * index:false不建立倒排索引，如果不根据该域进行（查询、过滤、排序...）比如:图片地址
     *
     *
     * store:指定该域需不需存储，默认值为false
     * 一般大文本可以将store设置为false，比如：商品的介绍（可以建立倒排索引，不用存储）
     *
     *analyzer:指定分词器（默认：standard、ik_max_word、ik_smart）
     *当type=FieldType.Text  必须指定分词器
     */
    @Field(store = true,type = FieldType.Integer)
    private Integer account_number;
    @Field(store = true,type = FieldType.Double)
    private Double balance;
    @Field(store = true,type = FieldType.Keyword)
    private String firstname;
    @Field(store = true,type = FieldType.Keyword)
    private String lastname;
    @Field(store = true,type = FieldType.Integer)
    private Integer age;
    @Field(store = true,type = FieldType.Integer)
    private Integer gender;
    @Field(store = true,type = FieldType.Text,analyzer = "ik_max_word")
    private String address;
    @Field(store = true,type = FieldType.Keyword)
    private String job;
    @Field(store = true,type = FieldType.Keyword)
    private String email;
    @Field(store = true,type = FieldType.Keyword)
    private String city;
    @Field(store = true,type = FieldType.Keyword)
    private String state;

}